<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;

 /**
  * 处理一些七牛云的图片上传与删除
  */
class CommonApi extends Controller
{
    /**
     * [uploadToQiNiu 处理七牛云的图片上传方法]
     * @param  Request $request  请求类
     * @param  string  $fileName 对应的form表单文件上传的name
     * @return array            如果没有上传文件，会返回['status' => 4403, 'msg' => '没有上传文件']； 如果上传文件不合法，会返回['status' => 4401, 'msg' => '上传文件不合法']； 如果上传文件失败，会返回['status' => 4044, 'msg' => '失败', 'data' => $err]， 如果成功，会返回['status' => 2200, 'msg' => '文件上传成功', 'data' => $res]
     * @author Wt1ao <[424356452@qq.com]>
     */
    public function uploadToQiNiu(Request $request, $fileName = 'pic')
    {

        $file = $request->file($fileName);//$_FILES[]
        if(!$file){
          return [
            'status' => 4403,
            'msg'    => '没有上传文件',
          ];
        }
        if(!$file->isValid()){
          return [
            'status' => 4401,
            'msg'    => '上传文件不合法',
          ];
        }

        // 需要填写你的 Access Key 和 Secret Key,具体查看七牛后台
        $accessKey = env('QINIU_ACCESSKEY');
        $secretKey = env('QINIU_SECRETKEY');

        // 构建鉴权对象
        $auth = new Auth($accessKey, $secretKey);


        // 要上传的空间,这是在你七牛后台设置的
        $bucket = env('QINIU_BUCKET');

        // 生成上传 Token
        $token = $auth->uploadToken($bucket);

        // 要上传文件的本地路径
        $filePath = $file->getRealPath();

        // 上传到七牛后保存的文件名
        $date = time().uniqid();
        $key = $date.'.'.$file->getClientOriginalExtension();

        // 初始化 UploadManager 对象并进行文件的上传。
        $uploadMgr = new UploadManager();

        // 调用 UploadManager 的 putFile 方法进行文件的上传。
        list($res, $err) = $uploadMgr->putFile($token, $key, $filePath);
        if ($err !== null) {

            return ['status'=>4044,'msg'=>'失败', 'data' => $err];

        } else {
            $info = [
              'status' => '2200',
              'msg'    => '上传成功',
              'data'   => $res
            ];

            return $info;

        }
    }

    /**
     * [deleteToQiNiu 处理七牛云上的图片删除]
     * @param  string $table   [表名]
     * @param  string $picName [该数据表对应的图片字段名 如：shop_sates 里的icon 、logo]
     * @param  int $id    [对应数据表的ID]
     * @return boolean
     * @author wt1ao <[424356452@qq.com]>
     */
    public function deleteToQiNiu($table, $picName, $id)
    {
      $OldIcon = \DB::table($table)->select($picName)->where('id', $id)->first();

      $disk = \Storage::disk('qiniu');

      $delQiNiuPic = $disk->delete($OldIcon->$picName);

      return $delQiNiuPic;
    }
}
